home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-06-18 | 4.2 KB | 132 lines | [TEXT/MPS ] |
- module memory(d,mras,cas,ma,w);
-
- inout [31: 0]d;
- reg [31: 0]dd;
- assign d = dd;
-
- input mras, cas, w;
-
- input [ 9: 0]ma;
-
- reg [19: 0]addr;
-
- reg [31: 0]m[8192]; // the memory - just enough to run a program
-
- always @(negedge mras)
- addr[19:10] = ma;
-
- always @(posedge mras)
- dd = 32'bz;
-
- always @(negedge cas)
- if (~mras) begin
- addr[9:0] = ma;
- if (~w) begin
- dd = m[addr];
- end else begin
- m[addr] = d;
- end
- end
-
- initial begin
- addr = 0;
- m[0] = 32'hc1000000; //00 const r1, screen_base
- m[1] = 32'he1000040; //04 consth r1, screen_base>>16
- m[2] = 32'hc2005555; //08 const r2, 0x5555
- m[3] = 32'he2005555; //0c consth r2, 0x5555
- m[4] = 32'hc300aaaa; //10 const r3, 0xaaaa
- m[5] = 32'he300aaaa; //14 consth r3, 0xaaaa
- m[6] = 32'hc4000080; //18 const r4, 128 // screen is 256 high
- // loop:
- m[7] = 32'hc5000009; //1c const r5, 9 // screen is 256/32+1 words wide = 32'h9
- // loop1:
- m[8] = 32'h21100000; //20 sw r2, (r1)
- m[9] = 32'h65288001; //24 sub r5, r5, 1
- m[10] = 32'h662b8000; //28 eq r6, r5, 0
- m[11] = 32'ha6000020; //2c bf r6, loop1
- m[12] = 32'h61080004; //30 add r1, r1, 4
- //
- m[13] = 32'hc5000009; //34 const r5, 9 // screen is 256/32+1 words wide = 32'h9
- // loop2:
- m[14] = 32'h21180000; //38 sw r3, (r1)
- m[15] = 32'h65288001; //3c sub r5, r5, 1
- m[16] = 32'h662b8000; //40 eq r6, r5, 0
- m[17] = 32'ha6000038; //44 bf r6, loop2
- m[18] = 32'h61080004; //48 add r1, r1, 4
- //
- m[19] = 32'h64208001; //4c sub r4, r4, 1
- m[20] = 32'h66238000; //50 eq r6, r4, 0
- m[21] = 32'ha600001c; //54 bf r6, loop
- m[22] = 32'h60000000; //54 nop
- //
- m[23] = 32'hc1000fd0; //58 const r1, screen_base+4*9*(128-16 + 4*4 0x00400010+36*(112) 00400fd0
- m[24] = 32'he1000040; //5c consth r1, (screen_base+4*9*((256/2)-(32/2)) + 4*4)>>16
- m[25] = 32'hc2000400; //60 const r2, icon
- m[26] = 32'hc3000020; //64 const r3, 32
- // loop3:
- m[27] = 32'h02200000; //68 lw r4, (r2)
- m[28] = 32'h62100004; //6c add r2, r2, 4
- m[29] = 32'h21200000; //70 sw r4, (r1)
- m[30] = 32'h63188001; //74 sub r3, r3, 1
- m[31] = 32'h651b8000; //78 eq r5, r3, 0
- m[32] = 32'ha500006c; //7c bf r5, loop3
- m[33] = 32'h61080024; //80 add r1, r1, 9*4
-
- m[34] = 32'hc100fffc; //84 const r1, 004ffffc
- m[35] = 32'he100004f; //88 consth r1, 004ffffc>>6
- m[36] = 32'hc2000440; //8c const r2, sound
- m[37] = 32'hc300028b; //90 const r3, 651
- // loop4:
- m[38] = 32'h02200000; //94 lw r4, (r2)
- m[39] = 32'h62100004; //98 add r2, r2, 4
- m[40] = 32'h21200000; //9c sw r4, (r1)
- m[41] = 32'h63188001; //a0 sub r3, r3, 1
- m[42] = 32'h651b8000; //a4 eq r5, r3, 0
- m[43] = 32'ha5000094; //a8 bf r5, loop4
- m[44] = 32'h60000000; //ac nop
-
- m[45] = 32'hc100fff8; //b0 const r1, 004ffff8
- m[46] = 32'he100004f; //b4 consth r1, 004ffff8>>6
- m[47] = 32'hc2000001; //b8 consth r1, 1
- m[48] = 32'h21100000; //bc sw r2, (r1)
-
- m[49] = 32'h60005000; //c0 halt
- // . = 0x400
- //icon:
- m[256] = 32'h55555555;
- m[257] = 32'hAFFFFFEA;
- m[258] = 32'h58000015;
- m[259] = 32'hA800001A;
- m[260] = 32'h58FFFF15;
- m[261] = 32'hA900009A;
- m[262] = 32'h59000095;
- m[263] = 32'hA900009A;
- m[264] = 32'h59041095;
- m[265] = 32'hA900809A;
- m[266] = 32'h59008095;
- m[267] = 32'hA900809A;
- m[268] = 32'h59041095;
- m[269] = 32'hA903E09A;
- m[270] = 32'h59014095;
- m[271] = 32'hA901409A;
- m[272] = 32'h59008095;
- m[273] = 32'hA8FFFF1A;
- m[274] = 32'h58000015;
- m[275] = 32'hA800001A;
- m[276] = 32'h58000015;
- m[277] = 32'hA800001A;
- m[278] = 32'h5800FF15;
- m[279] = 32'hA800001A;
- m[280] = 32'h58000015;
- m[281] = 32'hA800001A;
- m[282] = 32'h58000015;
- m[283] = 32'hAFFFFFEA;
- m[284] = 32'h54000035;
- m[285] = 32'hAC00002A;
- m[286] = 32'h54000035;
- m[287] = 32'hAFFFFFEA;
- //sound:
- end
-
- endmodule
-